太好了,我們已經把 Move 大致掌握了! 是否都踏上成為 Move 大師了呢 ?!
我們來回顧一些筆者認為很重要的主題。
大家如果有寫過其他程式語言應該對他不陌生,在 Move 裡,使用泛型可以為任何有某些特徵的類型實作該類型的操作,而這樣做的好處,你可以寫出通用性邏輯運算 (在 Struct 或 function
)。像是你可以定義帳戶的通用性邏輯,創造 Account 類型去定義所需要的操作,或是定義資產類型等等。
Resources 都會有一個 Key,這個 Key 在同個帳號之下只會存在一個。利用泛型可以將資源推廣成各種實作的規範。而 Resources 的 key 就包含了完整的規範資訊。像 0x1 就是標準模組存放的 Account 地址。也只有該模組能夠操作旗下定義的類型。
address 0x2 {
module Example {
struct MyStore<T> {
value: u64
}
}
}
script {
use 0x2::Example::MyStore<bool>
func main() {
//.....
}
}
以這個範例程式來說,只有 0x2::Example
這個模組可以操作 0x42::Example::MyStore,整體示意圖會像下面這樣,以帳號地址為首,幫助平面化。
| 與 Solidity 不太依樣,並非將合約地址擺在第一層,有興趣的可以自行比對。
比較特別的還有類型都可以給予能力,在區塊鏈中,針對每個模塊和函數進行能力釋放是很重要的設計,也是需要清楚掌握。
其他的筆者認為,可以把本篇文章當作一個語言使用手冊,遇到再來翻閱會更有感覺,此外,寫好測試的能力也是需要掌握的,讓我們 Move to Day 27。